Due to performance advantages of solid state storage devices as compared to magnetic media storage devices, it is often desirable for host computer operations to utilize Flash-based block storage devices as a primary storage media. However, traditional memory management techniques are often inadequate for utilizing Flash-based block storage devices. For example, many file systems handle delete operations by flagging deleted data blocks as “not in use,” and the deleted data blocks are eventually overwritten by new data. However, because of how some solid state storage devices function at the lowest level, an overwrite produces significant overhead compared to writing data into an empty page, potentially crippling write performance.
For this and other reasons, various interfaces support a “trim” command (known as TRIM in the ATA command set, and UNMAP in the SCSI command set). The trim command allows an operating system executing on a host computing device to inform a connected solid-state storage device which logical blocks of data are no longer considered in use and can be marked as such (thus freeing the blocks to store new data or be wiped internally). Trimming enables the solid state storage devices to handle garbage collection overhead of the logical blocks, which would otherwise significantly slow down future write operations to the involved physical blocks, in advance. Traditionally, once wiped, the physical blocks become free for storing new data.